#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
void out_put(int status)
{
	int i = 0;
	if(WIFEXITED(status))
	{
		printf("normal exit;");
		i = WEXITSTATUS(status);
	}
	else if(WIFSIGNALED(status))
	{
		printf("abnormal exit;");
		i = WTERMSIG(status);
	}
	else if(WIFSTOPPED(status))
	{
		printf("stopped sig;");
		i = WSTOPSIG(status);
	}
	printf("status = %d\n",i);
}
int main(void)
{
	int pid = fork();
	int status;
	if(pid == 0)
	{
		printf("pid = %d;ppid = %d\n",getpid(),getppid());
		sleep(3);
		// 暂停
		pause();
		exit(1);
		return 11;
	}
	// 会阻塞
	// wait(&status);
	// sleep(3);
	// waitpid(pid,&status,WNOHANG);
	// 不会阻塞，
	while(0 == waitpid(pid,&status,WUNTRACED | WNOHANG))
	{
		
	}
	out_put(status);
	return 0;
}
